<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <!-- Vue.js -->
    <link rel="stylesheet" type="text/css" href="css/googlefonts.css" />
    <link rel="stylesheet" type="text/css" href="css/materialdesignicons.min.css" />
    <link rel="stylesheet" type="text/css" href="css/vuetify.min.css" />
    <!-- HackBar -->
    <link rel="stylesheet" type="text/css" href="css/index.css" />
</head>

<body>
    <div id="app" v-cloak>
        <v-app>
            <v-app-bar app dense flat>
                <v-toolbar-items>
                    <v-btn text @click="load()">加载</v-btn>
                    <v-btn text @click="split()">分隔</v-btn>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                测试
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>通用路径</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="controlTest('start', 'scripts/test/paths.js', { payloadsPath: chrome.runtime.getURL('payloads/paths.txt'), againstWebRoot: true })">
                                        <v-list-item-title>从根目录</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="controlTest('start', 'scripts/test/paths.js', { payloadsPath: chrome.runtime.getURL('payloads/paths.txt'), againstWebRoot: false })">
                                        <v-list-item-title>从当前目录</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                万能密码
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Payload.EveryPass.php1', true)">
                                <v-list-item-title>php payload1</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.EveryPass.php2', true)">
                                <v-list-item-title>php payload2</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.EveryPass.php3', true)">
                                <v-list-item-title>php payload3</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.EveryPass.php4', true)">
                                <v-list-item-title>php payload4</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.EveryPass.php5', true)">
                                <v-list-item-title>php payload5</v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-divider inset vertical></v-divider>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                SQL注入
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>MySQL</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.MySQL.dumpDatabases')">
                                        <v-list-item-title>所有库</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.MySQL.dumpTables')">
                                        <v-list-item-title>所有表</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.MySQL.dumpColumns')">
                                        <v-list-item-title>所有列</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SQLi.MySQL.dumpCurrentQueries', true)">
                                        <v-list-item-title>Dump current queries payload</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SQLi.MySQL.dumpInOneShot', true)">
                                        <v-list-item-title>Dump in one shot payload</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.MySQL.unionSelect', false)">
                                        <v-list-item-title>Union查询</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SQLi.MySQL.errorBased', true)">
                                        <v-list-item-title>报错注入</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>PostgreSQL</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.PostgreSQL.dumpDatabases')">
                                        <v-list-item-title>所有库</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.PostgreSQL.dumpTables')">
                                        <v-list-item-title>所有表</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.PostgreSQL.dumpColumns')">
                                        <v-list-item-title>所有列</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.PostgreSQL.unionSelect', false)">
                                        <v-list-item-title>Union查询</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SQLi.PostgreSQL.errorBased', true)">
                                        <v-list-item-title>报错注入</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>SQLite</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.SQLite.dumpTables')">
                                        <v-list-item-title>所有表</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.SQLite.dumpColumns')">
                                        <v-list-item-title>所有列（含表名）</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="sqlInjectionPrompt('Payload.SQLi.SQLite.unionSelect', false)">
                                        <v-list-item-title>Union查询</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                            <v-list-item @click="applyFunction('Payload.SQLi.polyglot', true)">
                                <v-list-item-title>Polyglot</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.SQLi.spaceToComment')">
                                <v-list-item-title>注释替换空格</v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                XSS
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Payload.XSS.polyglot', true)">
                                <v-list-item-title>Polyglot</v-list-item-title>
                            </v-list-item>
                            <v-divider></v-divider>
                            <v-list-item @click="applyFunction('Encode.Html.encode')">
                                <v-list-item-title>Html encode</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Encode.Html.decode')">
                                <v-list-item-title>Html decode</v-list-item-title>
                            </v-list-item>
                            <v-divider></v-divider>
                            <v-list-item @click="applyFunction('Encode.CharCode.encode')">
                                <v-list-item-title>String.fromCharCode encode</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Encode.CharCode.decode')">
                                <v-list-item-title>String.fromCharCode decode</v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                PHP文件包含
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Payload.LFI.phpWrapperBas64', true)">
                                <v-list-item-title>PHP wrapper - Base64</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.LFI.phpWrapperBas64Case', true)">
                                <v-list-item-title>PHP wrapper - Base64（大小写混淆）</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.LFI.phpWrapperRot13', true)">
                                <v-list-item-title>PHP wrapper - Rot13</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.LFI.data', true)">
                                <v-list-item-title>PHP wrapper - data</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.LFI.expect', true)">
                                <v-list-item-title>PHP wrapper - expect</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.LFI.input', true)">
                                <v-list-item-title>PHP wrapper - input</v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                PHP命令执行
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Payload.PHPRCE.phpinfo.payload', true)">
                                <v-list-item-title>{{Payload.PHPRCE.phpinfo.title}}<code>{{Payload.PHPRCE.phpinfo.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.PHPRCE.highlight_file.payload', true)">
                                <v-list-item-title>{{Payload.PHPRCE.highlight_file.title}}<code>{{Payload.PHPRCE.highlight_file.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.PHPRCE.glob.payload', true)">
                                <v-list-item-title>{{Payload.PHPRCE.glob.title}}<code>{{Payload.PHPRCE.glob.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.PHPRCE.scandir.payload', true)">
                                <v-list-item-title>{{Payload.PHPRCE.scandir.title}}<code>{{Payload.PHPRCE.scandir.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.PHPRCE.nmap.payload', true)">
                                <v-list-item-title>{{Payload.PHPRCE.nmap.title}}<code>{{Payload.PHPRCE.nmap.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.PHPRCE.noAZaz09_test.payload', true)">
                                <v-list-item-title>{{Payload.PHPRCE.noAZaz09_test.title}}<code>{{Payload.PHPRCE.noAZaz09_test.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.PHPRCE.noAZaz09_getshell.payload', true)">
                                <v-list-item-title>{{Payload.PHPRCE.noAZaz09_getshell.title}}<code>{{Payload.PHPRCE.noAZaz09_getshell.code}}</code></v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                Python
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Payload.Python.idna.payload', true)">
                                <v-list-item-title>{{Payload.Python.idna.title}}<code>{{Payload.Python.idna.code}}</code></v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                模板注入
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>Jinja2 (Python)</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Jinja2.tuple2Class', true)">
                                        <v-list-item-title>Access all class by tuple</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Jinja2.string2Class', true)">
                                        <v-list-item-title>Access all class by string</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Jinja2.list2Class', true)">
                                        <v-list-item-title>Access all class by list</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Jinja2.method2Global', true)">
                                        <v-list-item-title>Access global variables by method</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Jinja2.flaskRCE', true)">
                                        <v-list-item-title>Flask RCE</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Jinja2.readFlag', true)">
                                        <v-list-item-title>Shrine读flag</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>Java</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Java.commonRCE', true)">
                                        <v-list-item-title>Common Java Template RCE</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SSTI.Java.thymeleafRCE', true)">
                                        <v-list-item-title>Thymeleaf RCE</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>PHP Smarty</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="applyFunction('Payload.SSTI.PHP_Smarty.version', true)">
                                        <v-list-item-title>Smarty版本（小于3.1.39可用）</v-list-item-title>
                                    </v-list-item>
                                    <v-list-item @click="applyFunction('Payload.SSTI.PHP_Smarty.RCE', true)">
                                        <v-list-item-title>RCE</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                            <v-menu offset-x open-on-hover>
                                <template v-slot:activator="{ on }">
                                    <v-list-item v-on="on" @click.stop>
                                        <v-list-item-title>PHP TWIG</v-list-item-title>
                                        <v-list-item-action class="justify-end">
                                            <v-icon small>mdi-menu-right</v-icon>
                                        </v-list-item-action>
                                    </v-list-item>
                                </template>
                                <v-list dense>
                                    <v-list-item @click="applyFunction('Payload.SSTI.PHP_TWIG.RCE', true)">
                                        <v-list-item-title>RCE</v-list-item-title>
                                    </v-list-item>
                                </v-list>
                            </v-menu>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                编码
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Encode.URL.encode')">
                                <v-list-item-title>URL encode</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Encode.URL.decode')">
                                <v-list-item-title>URL decode</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Encode.URL.decodePlus')">
                                <v-list-item-title>URL decode (+ => space)</v-list-item-title>
                            </v-list-item>
                            <v-divider></v-divider>
                            <v-list-item @click="applyFunction('Encode.Base64.encode')">
                                <v-list-item-title>Base64 encode</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Encode.Base64.decode')">
                                <v-list-item-title>Base64 decode</v-list-item-title>
                            </v-list-item>
                            <v-divider></v-divider>
                            <v-list-item @click="applyFunction('Encode.Hexadecimal.encode')">
                                <v-list-item-title>Hexadecimal encode</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Encode.Hexadecimal.decode')">
                                <v-list-item-title>Hexadecimal decode</v-list-item-title>
                            </v-list-item>
                            <v-divider></v-divider>
                            <v-list-item @click="applyFunction('Encode.Unicode.encode')">
                                <v-list-item-title>Unicode encode</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Encode.Unicode.decode')">
                                <v-list-item-title>Unicode decode</v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                MD5绕过
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Payload.MD5.payload1.payload',true)">
                                <v-list-item-title>{{Payload.MD5.payload1.title}}<code>{{Payload.MD5.payload1.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.MD5.payload2.payload',true)">
                                <v-list-item-title>{{Payload.MD5.payload2.title}}<code>{{Payload.MD5.payload2.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.MD5.payload3.payload',true)">
                                <v-list-item-title>{{Payload.MD5.payload3.title}}<code>{{Payload.MD5.payload3.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.MD5.payload4.payload',true)">
                                <v-list-item-title>{{Payload.MD5.payload4.title}}<code>{{Payload.MD5.payload4.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.MD5.payload5.payload',true)">
                                <v-list-item-title>{{Payload.MD5.payload5.title}}<code>{{Payload.MD5.payload5.code}}</code></v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Payload.MD5.payload6.payload',true)">
                                <v-list-item-title>{{Payload.MD5.payload6.title}}<code>{{Payload.MD5.payload6.code}}</code></v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-menu offset-y>
                        <template v-slot:activator="{ on }">
                            <v-btn text v-on="on">
                                哈希
                                <v-icon small right>mdi-menu-down</v-icon>
                            </v-btn>
                        </template>
                        <v-list dense>
                            <v-list-item @click="applyFunction('Hash.MD5.digest')">
                                <v-list-item-title>MD5</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Hash.SHA1.digest')">
                                <v-list-item-title>SHA1</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Hash.SHA256.digest')">
                                <v-list-item-title>SHA256</v-list-item-title>
                            </v-list-item>
                            <v-list-item @click="applyFunction('Hash.SHA512.digest')">
                                <v-list-item-title>SHA512</v-list-item-title>
                            </v-list-item>
                        </v-list>
                    </v-menu>
                    <v-btn text @click="applyFunction('Payload.SQLi.spaceToComment')">注释替换空格</v-btn>
                    <v-divider inset vertical></v-divider>
                    <v-btn text @click="execute()">执行</v-btn>
                </v-toolbar-items>
            </v-app-bar>
            <v-main>
                <v-container fluid px-4>
                    <v-textarea label="URL" rows="1" ref="url" auto-grow v-model="request.url" @focus="onFocus($event)" @keyup="keyup($event)" @keydown.stop></v-textarea>
                    <v-row>
                        <v-col cols="12" md="6">
                            <v-layout align-center>
                                <v-switch label="Enable POST" v-model="request.body.enabled"></v-switch>
                                <v-spacer></v-spacer>
                                <v-select class="pt-2" v-model="request.body.enctype" :items="supportedEnctype()" label="enctype" v-show="request.body.enabled" dense offset-y></v-select>
                            </v-layout>
                            <v-textarea label="Body" rows="1" auto-grow v-show="request.body.enabled" v-model="request.body.content" @keyup="keyup($event)" @focus="onFocus($event)" @keydown.stop></v-textarea>
                        </v-col>
                        <v-col cols="12" md="6">
                            <v-btn id="add-header-button" class="body-button" @click="addHeader()">添加请求头</v-btn>
                            <v-layout class="header-settings" align-center v-for="(header, index) in request.headers" :key="index">
                                <v-checkbox v-model="header.enabled"></v-checkbox>
                                <v-combobox dense class="px-1 pt-2" label="Name" v-model="header.name" :items="commonRequestHeaders()" @focus="onFocus($event)" :menu-props='{ "maxHeight": 200 }'></v-combobox>
                                <v-text-field class="px-1" label="Value" v-model="header.value" @focus="onFocus($event)" @keydown.stop></v-text-field>
                                <v-btn icon text @click="deleteHeader(index)">
                                    <v-icon small>mdi-close</v-icon>
                                </v-btn>
                            </v-layout>
                        </v-col>
                    </v-row>
                </v-container>
            </v-main>
            <v-dialog max-width="580" v-model="reloadDialog">
                <v-card>
                    <v-card-title class="headline">
                        Unable to fetch request information
                    </v-card-title>
                    <v-card-text class="body-1">
                        After installing extension, it is required to reload the tab for recording the request.<br><br>

                        Note that the extension cannot record sensitive requests. Please visit <a href="https://developer.chrome.com/extensions/webRequest" target="blank">here</a> for more information.
                    </v-card-text>
                    <v-card-actions>
                        <v-spacer></v-spacer>
                        <v-btn text @click="reloadDialog = false">OK</v-btn>
                    </v-card-actions>
                </v-card>
            </v-dialog>
            <v-dialog max-width="580" persistent eager v-model="sqlInjectionDialog.show">
                <v-form @submit.prevent="sqlInjectionDialog.show = false; applyFunction(sqlInjectionDialog.func, true, sqlInjectionDialog)" v-model="sqlInjectionDialog.valid">
                    <v-card>
                        <v-card-title class="headline">
                            SQL注入
                        </v-card-title>
                        <v-card-text class="body-1">
                            <p v-if="sqlInjectionDialog.positionRequired">列数必须大于等于回显位置</p>
                            <p v-else>用于UNION SELECT的列数</p>
                            <v-row>
                                <v-col>
                                    <v-text-field type="number" min="1" label="列数" ref="sqlInjectionInput" :rules="[v => /^[1-9][0-9]{0,}$/.test(v) || 'Invalid value']" v-model="sqlInjectionDialog.columns" @keydown.stop required></v-text-field>
                                </v-col>
                                <v-col v-show="sqlInjectionDialog.positionRequired">
                                    <v-text-field type="number" min="1" :max="sqlInjectionDialog.columns" label="回显位置" :rules="[v => /^[1-9][0-9]{0,}$/.test(v) || 'Invalid value']" v-model="sqlInjectionDialog.position" @keydown.stop required></v-text-field>
                                </v-col>
                            </v-row>
                        </v-card-text>
                        <v-card-actions>
                            <v-spacer></v-spacer>
                            <v-btn text type="submit" :disabled="!sqlInjectionDialog.valid">确定</v-btn>
                            <v-btn text @click="sqlInjectionDialog.show = false">取消</v-btn>
                        </v-card-actions>
                    </v-card>
                </v-form>
            </v-dialog>
            <v-dialog max-width="580" persistent v-model="testProgressDialog.show">
                <v-card>
                    <v-card-title class="headline">
                        测试进度
                    </v-card-title>
                    <v-card-text class="body-1">
                        <p v-if="!testProgressDialog.status">等待脚本响应</p>
                        <p v-else>Status: {{testProgressDialog.status}}</p>
                        <v-progress-linear v-if="!testProgressDialog.result" :indeterminate="!testProgressDialog.percentage" :value="testProgressDialog.percentage"></v-progress-linear>
                        <v-data-table v-if="testProgressDialog.result" :headers="testProgressDialog.result.header" :items="testProgressDialog.result.data"></v-data-table>
                    </v-card-text>
                    <v-card-actions>
                        <v-spacer></v-spacer>
                        <v-btn text v-if="!testProgressDialog.result" @click="controlTest('toggle')">暂停/继续</v-btn>
                        <v-btn text v-if="!testProgressDialog.result" @click="controlTest('stop')">停止</v-btn>
                        <v-btn text v-if="testProgressDialog.result" @click="testProgressDialog.show = false">取消</v-btn>
                    </v-card-actions>
                </v-card>
            </v-dialog>
            <v-snackbar v-model="snackbar.show" color="error" timeout="3000" bottom>
                {{ snackbar.text }}
                <v-btn @click="snackbar.show = false" dark text>取消</v-btn>
            </v-snackbar>
        </v-app>
    </div>

    <!-- Vue.js Libraries -->
    <script src="scripts/vue.js/vue.min.js" type="text/javascript"></script>
    <script src="scripts/vue.js/vuetify.min.js" type="text/javascript"></script>
    <!-- crypto-js Libraries -->
    <script src="scripts/crypto-js/core.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/x64-core.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/enc-base64.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/enc-hex.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/enc-latin1.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/enc-utf8.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/md5.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/sha1.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/sha256.min.js" type="text/javascript"></script>
    <script src="scripts/crypto-js/sha512.min.js" type="text/javascript"></script>
    <!-- 万能密码 - by fangzi -->
    <script src="scripts/pass/everypass.js" type="text/javascript"></script>
    <!-- HackBar -->
    <script src="scripts/lib/payload.js" type="text/javascript"></script>
    <script src="scripts/lib/encode.js" type="text/javascript"></script>
    <script src="scripts/lib/hash.js" type="text/javascript"></script>
    <script src="scripts/index.js" type="text/javascript"></script>
</body>

</html>